
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import java.util.ArrayList;

/**
 *
 * @author Jeppe
 */
public class Spiller {
    private String navn;
    private int point;
    private ArrayList <Kort> hånd = new ArrayList <>();
    
    /**
     * Spiller constructor
     * 
     * @param etNavn navnet på spilleren
     */
    public Spiller (String etNavn){
        this.navn = etNavn;
    }
    /**
     * Metoden der gør så vi kan hente navnet på den pågældende spiller i andre klasser 
     */
    public String getNavn(){
        return navn;
    }
    public int getPoint(){
        return point;
    }

    public ArrayList<Kort> getHånd() {
        return hånd;
    }
        
    public void addPoint(int pointTil){
        point=point+pointTil;
    }
    //Gør så spilleren ikke har nogen kort.
    public void tømHånd(){
        this.hånd.clear();    
    }
    /**
     * Metode der giver den valgte spiller et kort op.
     * @param etKort = deck1.trækNæsteKort
     */
    public void tilføjKort (Kort etKort){
            this.hånd.add(etKort);        
    }

     /**
      * Få alle tilbageværende kort på hånden til at skifte en plads mod 0 i arrayet.
      * @param kortIndex indtast hvilket kort der skal lægges ned i bunken fra hånden.
      * @return det kort som man har valgt at lægge ned.
      */
     public Kort lægKortNed(int kortIndex){         
         return hånd.remove(kortIndex);
    }
     public String getKortStr(int kort){
         return this.hånd.get(kort-1).toString();
     }
     public String getKortSuit(int kort){
         return this.hånd.get(kort-1).toString();
     }
     public int getKortNum(int kort){
         return this.hånd.get(kort-1).getNumber();
     }
     public Kort getKort(int kort){
         return this.hånd.get(kort-1);
     }
    
    /**
     * Udregner pointsummen for de kort spilleren har på hånden.
     */
    public int getHåndSum(){
        int håndSum=0;
        int kortNum;
        
        
        for (int c = 0; c < this.hånd.size(); c++) {
            
            //Henter nummeret på kortet fra kort-klassen
            kortNum = this.hånd.get(c).getNumber();
            
            //Henter den nuværende Suit
            Suit kulør = this.hånd.get(c).getSuit();
            
        
            if (kortNum == 1){
            //kortSum = 25;     BRUGES IKKE
            håndSum += 15;
            }   
            else if (kortNum == 2){
            håndSum += 25;
            }   
            else if (kortNum >2 && kortNum< 5){
            håndSum += 5;
            }   
            else if (kortNum ==  5){
                if (kulør== Suit.Spar){
                håndSum += 50;
                } else{
                    håndSum += 5;
                }
            }
            else if (kortNum >5 && kortNum <8){           
            håndSum += 5;
            }
            else if (kortNum == 8){
            håndSum += 25;
            }
            else if (kortNum == 9){
            håndSum += 5;
            }
            else if (kortNum >9 && kortNum < 13){
            håndSum += 10;
            }
            else if (kortNum == 13){
                if (kulør== Suit.Hjerter){
            håndSum += 50;
                } else{
                    håndSum +=10;
                }
            }
        }
        
        return håndSum;
    }
    /**
     * Metoden der udskriver alle de kort en spiller har på hånden.
     * @param visKort = true eller false
     */
    public void udskrivHånd(boolean visKort){
        System.out.printf("%s's kort:\n", this.navn);
        for (int i = 0; i < antalKortPåHånd(); i++) {
            System.out.println("["+(i+1)+"] "+this.hånd.get(i));
            
        }
    }
    /**
     * Metode der fortæller hvor mange kort en spiller har på hånden. Skal ikke kaldes med nogen parameter.
     * @return Returnere hvor mange kort spilleren har på hånden i datatypen int.
     */
    public int antalKortPåHånd(){
        return this.hånd.size();
    }
}
